package org.It3CrearCliente;


import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.*;


public class CrearCliente{
	static Scanner teclado=new Scanner(System.in);
	static LinkedList<Cliente> lis_clientes=new LinkedList<Cliente>();
	static LinkedList<Cuenta> lis_cuentas=new LinkedList<Cuenta>();
	private PrintWriter pw;
	
	
	public CrearCliente(){
		try{
			cargar(lis_clientes,lis_cuentas);
		}catch(Exception e){
			System.out.print(e.getMessage());
		}
	}
	public CrearCliente(int i){
		
	}
	public LinkedList<Cuenta> getLis_cuentas(){
		return lis_cuentas;
	}
	public LinkedList<Cliente> getLis_clientes(){
		return lis_clientes;
	}
	public void anadirCuenta(Cuenta o){
		lis_cuentas.addLast(o);

	}
	public void anadirCliente(Cliente o){
		lis_clientes.addLast(o);
	}
	public static void cargar(LinkedList<Cliente> lis_clientes, LinkedList<Cuenta> lis_cuentas)throws Exception{
		int n_cuentas, n_clientes,n_cuentas_cliente;
		String numCuenta, actual,disponible, fecha, nombre_cliente, apellidos_cliente, fecha_cliente, dni_cliente, numCuentaCliente;
		Scanner fich=new Scanner(new File("D:/WorkSEclipse/Banki/datos_banco.txt"));
		n_cuentas=fich.nextInt();
		n_clientes=fich.nextInt();
		for(int i=0; i<n_cuentas;i++){
			numCuenta=fich.next();
			actual=fich.next();
			disponible=fich.next();
			fecha=fich.next();
			lis_cuentas.add(new Cuenta(numCuenta,actual,disponible,fecha));
		}
		for(int i=0; i<n_clientes;i++){
			LinkedList <String> cuentas_cliente=new LinkedList<String>();
			nombre_cliente=fich.next();
			apellidos_cliente=fich.next();
			fecha_cliente=fich.next();
			dni_cliente=fich.next();
			n_cuentas_cliente=fich.nextInt();
			for(int j=0; j<n_cuentas_cliente; j++){
				numCuentaCliente=fich.next();
				for(int z=0; z<n_cuentas; z++){
					if(numCuentaCliente.equals(lis_cuentas.get(z).getNumCuenta())){
						cuentas_cliente.add(lis_cuentas.get(z).getNumCuenta());
					}
				}
			}
			lis_clientes.add(new Cliente(nombre_cliente,apellidos_cliente,fecha_cliente,dni_cliente));
			if(n_cuentas_cliente>0){
				lis_clientes.getLast().setListCuentas(cuentas_cliente);
			}
		}
		fich.close();
	}
	public void guardar()throws Exception{
		FileWriter fich = null;
        pw = null;

		fich = new FileWriter("D:/WorkSEclipse/Banki/datos_banco.txt");
		pw.println(lis_cuentas.size());
		pw.println(lis_clientes.size());
		for(int i=0; i<lis_cuentas.size();i++){
			pw.println(lis_cuentas.get(i).getNumCuenta());
			pw.println(lis_cuentas.get(i).getActual());
			pw.println(lis_cuentas.get(i).getDisponible());
			pw.println(lis_cuentas.get(i).getFecha());
		}
		for(int i=0; i<lis_clientes.size();i++){
			pw.println(lis_clientes.get(i).getNombre());
			pw.println(lis_clientes.get(i).getApellidos());
			pw.println(lis_clientes.get(i).getFecha());
			pw.println(lis_clientes.get(i).getDni());
			pw.println(lis_clientes.get(i).getListCuentas().size());
			for(int j=0; j<lis_clientes.get(i).getListCuentas().size();j++){
				pw.println(lis_clientes.get(i).getListCuentas().get(j));
			}
		}
		pw.close();
		fich.close();
	}
	public LinkedList <Cliente> crear_cliente(){
    	String nombre, apellidos, fecha_n, dni; 
    	System.out.println("Introduzca nombre del cliente");
    	nombre=teclado.nextLine();
    	System.out.println("Introduzca apellidos del cliente");
    	apellidos=teclado.nextLine();
    	System.out.println("Introduzca fecha de nacimiento del cliente");
    	fecha_n=teclado.nextLine();
    	System.out.println("Introduzca dni del cliente");
    	dni=teclado.nextLine();
    	
    	lis_clientes.add(new Cliente(nombre,apellidos,fecha_n,dni));
    	return lis_clientes;
    }
}